package com.aabte.gc;

/**
 * @author Daniel
 */
public class OldGc {

    public static void main(String[] args) {

        /*
            -XX:NewSize=10485760
            -XX:MaxNewSize=10485760
            -XX:InitialHeapSize=20971520
            -XX:MaxHeapSize=20971520
            -XX:SurvivorRatio=8
            -XX:MaxTenuringThreshold=15
            -XX:PretenureSizeThreshold=3145728
            -XX:+UseParNewGC
            -XX:+UseConcMarkSweepGC
            -XX:+PrintGCDetails
            -XX:+PrintGCTimeStamps
            -Xloggc:gc.log
         */

        // 直接进入老年代
        byte[] array1 = new byte[4 * 1024 * 1024];
        array1 = null;

        byte[] array2 = new byte[2 * 1024 * 1024];
        byte[] array3 = new byte[2 * 1024 * 1024];
        byte[] array4 = new byte[2 * 1024 * 1024];
        byte[] array5 = new byte[128 * 1024];

        // Young GC array2+array3的4M直接上升老年代
        // 此时老年代可用空间小于6M，触发Old GC，收回array1对象4M
        // array5+未知对象512K保存在Survivor2区
        byte[] array6 = new byte[2 * 1024 * 1024];
        byte[] array7 = new byte[2 * 1024 * 1024];
        byte[] array8 = new byte[2 * 1024 * 1024];
    }

}
